package service

import (
	"go-demo/common"
	"go-demo/dao"
	"go-demo/util"
)

func UserRegister(username string, password string) int64 {
	//对用户名密码进行校验
	if len(username) > 6 || len(password) < 5 && len(password) > 8 {
		return common.ErrorCode
	}
	user, err := dao.GetUserByUserName(username)
	//查询到信息，返回错误信息
	if err == nil {
		return common.ErrorCode
	}
	//加密
	password = util.Md5(password + common.SALT)
	//没有err说明查询成功，会报查询不到的错误
	//创建用户
	dao.CreateUser(username, password)
	user, err = dao.GetUserByUserName(username)
	return user.Id
}

func GetUserTokenAndSave(username string) string {
	//生成token
	token, _ := common.GenToken(username)
	user, err := dao.GetUserByUserName(username)
	if err != nil {
		return ""
	}
	//保存token
	common.UsersLoginInfo[token] = user
	return token
}
func UserLogin(username string, password string) int64 {
	//对用户名密码进行校验
	if len(username) > 6 || len(password) < 5 && len(password) > 8 {
		return common.ErrorCode
	}
	user, err := dao.GetUserByUserName(username)
	//查询不到，返回错误信息
	if err != nil {
		return common.ErrorCode
	}
	//加密
	entryPassword := util.Md5(password + common.SALT)

	//密码校验
	if entryPassword != user.PassWord {
		return common.ErrorCode
	}
	//没有err说明查询成功，会报查询不到的错误
	return user.Id
}

func GetUserInfo(token string, userId int64) interface{} {
	//验证签名是否过期
	parseToken, err := common.ParseToken(token)
	if parseToken == nil && err != nil {
		return nil
	}
	user := common.UsersLoginInfo[token]
	if userId != user.Id {
		return nil
	}
	return user
}
